package com.ssm.basis.web.aop.lock;

import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 防止重复请求
 */
@Documented
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface RepeatRequest {
    /**
     * 方法锁时间(ms，毫秒)
     */
    @AliasFor("lockTime")
    long value() default 5 * 1000;

    /**
     * 方法锁时间(ms，毫秒)
     */
    @AliasFor("value")
    long lockTime() default 5 * 1000;

    /**
     * 时间单位
     */
    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;

    /**
     * 错误消息提示
     */
    String message() default "repeat request";

    /**
     * 返回指定异常
     */
    Class<? extends RuntimeException> throwable() default RuntimeException.class;
}
